package saee.bean;

import java.io.Serializable;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.primefaces.context.RequestContext;

import saee.dao.InstituicaoDocenteDAO;
import saee.modelo.InstituicaoDocente;

@ManagedBean
@ViewScoped
public class InstituicaoDocenteBean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private InstituicaoDocente instituicaoDocente = new InstituicaoDocente();
	private List<InstituicaoDocente> instituicaoDocentes;

	public void limparInstituicaoDocente() {
		this.instituicaoDocente = new InstituicaoDocente();
		this.instituicaoDocentes = null;
	}

	public InstituicaoDocente getInstituicaoDocente() {
		return instituicaoDocente;
	}

	public void setInstituicaoDocente(InstituicaoDocente instituicaoDocente) {
		this.instituicaoDocente = instituicaoDocente;
	}

	@SuppressWarnings("unchecked")
	public List<InstituicaoDocente> getInstituicaoDocentes() {
		if (instituicaoDocentes == null) {
			InstituicaoDocenteDAO dao = new InstituicaoDocenteDAO();
			this.instituicaoDocentes = dao.listarTodos(InstituicaoDocente.class);
		}

		return instituicaoDocentes;
	}

	public void setInstituicaoDocentes(List<InstituicaoDocente> instituicaoDocentes) {
		this.instituicaoDocentes = instituicaoDocentes;
	}

	public void gravarInstituicaoDocente(ActionEvent actionEvent) {
		InstituicaoDocenteDAO instituicaoDocenteDAO = new InstituicaoDocenteDAO();
		RequestContext context = RequestContext.getCurrentInstance();
		FacesMessage msg = null;
		boolean gravado = false;

		try {
			instituicaoDocenteDAO.cadastrar(instituicaoDocente);
			gravado = true;
			msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
					"Gravado com sucesso", null);

		} catch (Exception e) {
			e.printStackTrace();
			gravado = false;
			msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
					"Erro ao gravar", null);
		}
		limparInstituicaoDocente();
		FacesContext.getCurrentInstance().addMessage(null, msg);
		context.addCallbackParam("gravado", gravado);
	}

	public void alterarInstituicaoDocente(ActionEvent actionEvent) {
		InstituicaoDocenteDAO instituicaoDocenteDAO = new InstituicaoDocenteDAO();
		RequestContext context = RequestContext.getCurrentInstance();
		FacesMessage msg = null;
		boolean gravado = false;

		try {
			instituicaoDocenteDAO.atualizar(instituicaoDocente);
			gravado = true;
			msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
					"Alterado com sucesso", null);

		} catch (Exception e) {
			e.printStackTrace();
			gravado = false;
			msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
					"Erro ao alterar", null);
		}
		limparInstituicaoDocente();
		FacesContext.getCurrentInstance().addMessage(null, msg);
		context.addCallbackParam("gravado", gravado);
	}

	public void removerInstituicaoDocente() {
		InstituicaoDocenteDAO instituicaoDocenteDAO = new InstituicaoDocenteDAO();
		FacesMessage msg = null;
		
		try {
			instituicaoDocenteDAO.excluir(InstituicaoDocente.class, instituicaoDocente.getId());
			
			msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
					"Excluido com sucesso", null);
		} catch (Exception e) {
			e.printStackTrace();
			msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
					"Erro ao excluir", null);
		}
		limparInstituicaoDocente();
		FacesContext.getCurrentInstance().addMessage(null, msg);
		
	}

}
